package com.feihao.calendarTest;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class CalendarTestAAA {
    public static void main(String[] args) throws ParseException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查询的日期，如1998-06-18");
        String dateString = scanner.next();

        //将字符串解析为date
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date dateInput = simpleDateFormat.parse(dateString);

        //获取一个日历对象：
        Calendar c = new GregorianCalendar();

        //将日历时间设置成输入的日期
        c.setTime(dateInput);

        //打印表头：
        System.out.println("日\t一\t二\t三\t四\t五\t六");

        //获取这个月的总天数：
        int dayOFMonthMax = c.getActualMaximum(Calendar.DAY_OF_MONTH);
//        System.out.println(i);

        //获取本月1号是星期几，返回值：1-7，1表示星期天，7表示星期6.。。
        int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
//        System.out.println(dayOfWeek);

        //h获取当前日期中的日属性值：
        int currentDate = c.get(Calendar.DATE);

        //将日期中的属性值设置为 1 号：
        c.set(Calendar.DATE, 1);

        //打印1号之前所有日期的空格：
        for (int i = 0; i < dayOfWeek - 1; i++) {
            System.out.print("\t");
        }

        //打印本月的所有天数：
        for (int i = 0; i < dayOFMonthMax; i++) {
            //计算今天是本周的星期几，逢周六便换行：
            if (c.get(Calendar.DAY_OF_WEEK) == 7) {
                System.out.println();
            }
            //如果当前打印日期与输入日期一致，输出打印：
            if (c.get(Calendar.DATE) == currentDate) {
                System.out.print(c.get(Calendar.DATE) + "\t");
            } else {
                System.out.print(c.get(Calendar.DATE) + "\t");
            }
            //循环一次加1：
            c.add(Calendar.DATE, 1);
        }
    }
}
